package ar.edu.unq.edp.futbol.entregas;

import java.util.concurrent.CyclicBarrier;

import persistencia.Fecha;
import persistencia.TecnicoBuilder;
import unq.equipos.dom.Tecnico;
import ar.edu.unq.edp.futbol.usuarios.PonedorDeEquipo;
import ar.edu.unq.edp.futbol.usuarios.UsuarioPartidoCopa;
import ar.edu.unq.edp.futbol.usuarios.UsuarioPartidoSimple;

public class Entrega3y4 {
	public void ponerEquipos(){
		System.out.println("cargando equipos");
		
		CyclicBarrier barrier = new CyclicBarrier(2);
		
		Tecnico tecnico1 = new TecnicoBuilder().premadeTecnico1(),
				tecnico2 = new TecnicoBuilder().premadeTecnico2();
		
	    PonedorDeEquipo ponedor1 = new PonedorDeEquipo("chupanqui", barrier, tecnico1),
	    			ponedor2 = new PonedorDeEquipo("fenics", barrier, tecnico2);
		
		new Thread(ponedor1).start();
		new Thread(ponedor2).start();
		
		try {
			Thread.sleep(3000);
			ponedor1 = null;
			ponedor2 = null;
			System.gc();
			Thread.sleep(500);
		} catch (InterruptedException e) {
			throw new RuntimeException();
		}
	}
	
	public void ponerPartidosSimples(){
		System.out.println("cargando partidos simples");
		
		CyclicBarrier barrier = new CyclicBarrier(2);
		
		UsuarioPartidoSimple simple1 = new UsuarioPartidoSimple("chupanqui", "fenics", barrier, new Fecha(21, 01, 2011));
		UsuarioPartidoSimple simple2 = new UsuarioPartidoSimple("fenics", "chupanqui", barrier, new Fecha(21, 02, 2011));
		
		new Thread(simple1).start();
		new Thread(simple2).start();
		
		try {
			Thread.sleep(3000);
			simple1 = null;
			simple2 = null;
			System.gc();
			Thread.sleep(500);
		} catch (InterruptedException e) {
			throw new RuntimeException();
		}
		
	}
	
	public void ponerPartidosCopa(){
		System.out.println("cargando partidos copa");
		
		CyclicBarrier barrier = new CyclicBarrier(2);
		
		UsuarioPartidoCopa copa = new UsuarioPartidoCopa(barrier, "chupanqui", "fenics", new Fecha(21,01,211), new Fecha(21,02,2011));
		
		new Thread(copa).start();
	}
	
	public static void main(String[] args) throws Exception {
		Entrega3y4 main = new Entrega3y4();
		main.ponerEquipos();
		main.ponerPartidosSimples();
		main.ponerPartidosCopa();
	}
}
